package com.hexiang.config;

import com.hexiang.domain.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * proxyBeanMethods默认为true,表示cglib会为@Configuration生成一个代理类，因此而在user1中调用user2方法时，会通过代理方法从IOC容器中去获取，这样就是单例的。运行的时候，控制台只打印了一次“user2被调用”就证明了这一点
 * 但是如果将proxyBeanMethods设为false，则表示不生成代理，那么user1中调用user2,会再生成一个对象而不是从IOC容器中获取，这样能提高性能，也造成了多例。运行时控制台会打印两次“user2被调用”
 */
@Configuration(proxyBeanMethods = true)
public class CommonConfig {
    @Bean
    public User user1() {
        user2();
        return new User(1, "root", 21);
    }

    @Bean
    public User user2() {
        System.out.println("user2被调用");
        return new User(2, "admin", 22);
    }
}
